package cn.tedu.oa_system.base.aspect;

import cn.tedu.oa_system.base.exception.OASystemException;
import cn.tedu.oa_system.base.json_result.ResultDataDto;
import cn.tedu.oa_system.base.json_result.ResultDto;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * @author dkk
 * @date 2022/9/11
 * @desc 统一异常处理
 */
@RestControllerAdvice
public class OASystemExceptionHandler {

    /**
     * 自定义异常处理
     */
    @ExceptionHandler(OASystemException.class)
    public ResultDto<Void> handleTemplateException(OASystemException e){
        ResultDto<Void> resultDto = new ResultDto<>();
        String errorMes = e.getMessage();
        resultDto.setMes(errorMes);
        resultDto.setIsSuccess(false);
        return resultDto;
    }

    /**
     * 断言异常处理
     */
    @ExceptionHandler(IllegalArgumentException.class)
    public ResultDataDto<Void> handleIllegalArgumentException(IllegalArgumentException e){
        ResultDataDto<Void> resultDto = new ResultDataDto<>();
        String errorMes = e.getMessage();
        resultDto.setMes(errorMes);
        resultDto.setIsSuccess(false);
        return resultDto;
    }

    /**
     * 统一处理异常
     */
    @ExceptionHandler(Exception.class)
    public ResultDto<Void> handleException(Exception e){
        e.printStackTrace();
        ResultDto<Void> resultDto = new ResultDto<>();
        String errorMes = "执行错误!";
        resultDto.setMes(errorMes);
        resultDto.setIsSuccess(false);
        return resultDto;
    }


}
